package com.srx.openfeign.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * RabbitMQ 工具类，用于封装 RabbitMQ 传输信息。
 * @author srx
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MySQLInsertEsByRabbitMQ
{

    /**
     * 数据库主键 id，用于标识数据对象。
     */
    private Integer id;
    /**
     * 通用数据对象，用于存储需要传输的数据内容。
     * 可以支持任意类型的数据存储与传递。
     */
    private Object data;
    /**
     * 存储类名信息，通常用于反射操作或日志记录。
     * 有助于在处理过程中识别数据来源或目标类型。
     */
    private Class<?> className;
    /**
     * 存储索引名称，可用于标识数据的分类或用途。
     * 例如：队列名称、路由键等信息。
     */
    private String indexName;



    /**
     * 构造函数，用于初始化数据和索引名称。
     * 自动提取数据的类信息，便于后续反射或日志记录操作。
     *
     * @param data      需要传输的数据对象，支持任意类型
     * @param indexName 索引名称，用于标识数据的分类或用途（如队列名称、路由键）
     */
    public MySQLInsertEsByRabbitMQ(int id, Object data, String indexName)
    {
        this.id = id;
        this.data = data;
        this.className = data.getClass();
        this.indexName = indexName;
    }

}
